<!DOCTYPE html>
          <head>
        <meta charset="utf-8">
            
            <title>
                「Wechat」微信公众号开发流程 | ttdevs
            </title>
            <meta content="width=device-width, initial-scale=1" name="viewport">
            <meta name="theme-color" content="#4184f3">
            
            
            <link href="/favicon.ico" rel="icon"/>
            

            <link rel="stylesheet" href="/css/highlight.light.css">
            <link rel="stylesheet" href="/css/prism-customize.css">
            <link rel="stylesheet" href="/css/nav-icon.css">
            <link rel="stylesheet" href="/css/waves.min.css">
            <link rel="stylesheet" href="/css/jquery.tocify.css">
            <link rel="stylesheet" href="/css/main.css">
            <link rel="stylesheet" href="/css/nav-indicator.css">
            
  

  
  <!-- 谷歌统计 -->
  <script>
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

    ga('create', 'UA-97465173-1', 'auto');
    ga('send', 'pageview');

  </script>
  
            </meta>
        </meta>
    </head>

    <body>
        <header>
            <!-- cover image or sth. -->
        </header>
        <div id="main" class="m-scene">
            
<div class="nav-wrapper">

    <div class="container">
        <nav>
            <div class="logo wave">
                <a href="/" id="logo">
                    ttdevs
                </a>
            </div>
            <div class="nav-toggle-icon" >
                <div class="material-hamburger">
                    <span>
                    </span>
                    <span>
                    </span>
                    <span>
                    </span>
                </div>
            </div>
            <div class="menu-wrapper">
                <div class="nav-indicator">
                </div>
                <ul class="menus">
                    
                     
                        <li>
                            <a class="wave " href="/">
                                首页
                            </a>
                        </li>
                     
                        <li>
                            <a class="wave " href="/archives">
                                归档
                            </a>
                        </li>
                     
                        <li>
                            <a class="wave " href="/about">
                                关于
                            </a>
                        </li>
                     
                    
                   
                </ul>
            </div>
        </nav>
    </div>
</div>
            <div class="container content">
                <div class="scene_element scene_element--fadein">
                    <div class="row">
    <div class="main">
        <article>
          
          <header class="post-header with-cover" style="background-image:url('/1970/01/01/[Wechat]微信公众号开发流程/cover.jpg')" >
          
          </header>
          <h1 class="post-title">「Wechat」微信公众号开发流程</h1>

          <section class="post-info">
            <span class="post-date">1970/01/01</span>
            
            <span class="post-category">
                <a class="article-category-link" href="/categories/技术/">技术</a>
            </span>
            
            
            <span class="post-tags">
              <ul class="post-tag-list"><li class="post-tag-list-item"><a class="post-tag-list-link" href="/tags/Wechat/">Wechat</a></li></ul>
            </span>
            
          </section>

          <section class="post-content">
            <h2 id="0x01申请订阅号或者服务号"><a href="/1970/01/01/[Wechat]微信公众号开发流程/#0x01申请订阅号或者服务号" class="headerlink" title="0x01申请订阅号或者服务号"></a>0x01申请订阅号或者服务号</h2><p>微信有三种号：订阅号，公众号，服务号，所有人都可以注册订阅号，个人很难注册公众号和服务号；订阅号不能认证，开放的接口也是最少的。既然做开发，这种肯定不好使。因此我们需要选择订阅号或者服务号来做开发。自己没办法注册，可以考虑万能的淘宝。或者我们也可以使用<a href="http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login" target="_blank" rel="external">测试账号</a></p>
<h2 id="0x02-服务器功能开发"><a href="/1970/01/01/[Wechat]微信公众号开发流程/#0x02-服务器功能开发" class="headerlink" title="0x02 服务器功能开发"></a>0x02 服务器功能开发</h2><h3 id="配置自己的服务器"><a href="/1970/01/01/[Wechat]微信公众号开发流程/#配置自己的服务器" class="headerlink" title="配置自己的服务器"></a>配置自己的服务器</h3><p>在开发之前我们需要进行服务器的配置，这个不涉及具体的语言。登录微信后台，在 开发 &gt; 基本配置 &gt; 服务器配置 中进行配置。这里需要配置四个参数：</p>
<ul>
<li><p>URL</p>
<p>  这个是我们服务器的地址，必须是80端口。微信会把所有的事件和消息等都推送到这个地址上。</p>
</li>
<li><p>Token</p>
<p>  这个Token是我们分配给微信的</p>
</li>
<li><p>EncodingAESKey</p>
<p>  微信消息的加密秘钥</p>
</li>
<li><p>消息加解密方式</p>
<p>  没有特殊要求我们可以选择明文模式</p>
</li>
</ul>
<p>更多信息可以参考<a href="https://mp.weixin.qq.com/wiki?t=resource/res_main&amp;id=mp1421135319&amp;token=&amp;lang=zh_CN" target="_blank" rel="external">这里</a>。</p>
<h3 id="微信服务器验证"><a href="/1970/01/01/[Wechat]微信公众号开发流程/#微信服务器验证" class="headerlink" title="微信服务器验证"></a>微信服务器验证</h3><p>如果我们直接配置了上面的参数，是无法保存的，只有在我们配置的地址正确处理了微信的验证请求之后才可以保存成功。过程是这样的，微信会以get方式向我们配置的地址发一个请求，这个请求带了验证信息，和返回的字符串，他们分别是 <code>signature</code>、 <code>timestamp</code>、 <code>nonce</code>、 <code>echostr</code>，前三个参数用于验证，后一个用于返回微信。如果我们按照规则验证参数是正确的（这里会用到我们配置的Token），将echostr字段的信息返回，这样就可以保存了。当然，你也可以不做验证直接返回echostr参数内容也是可以，但是不推荐这样做。更多信息可以参考<a href="https://mp.weixin.qq.com/wiki?t=resource/res_main&amp;id=mp1421135319&amp;token=&amp;lang=zh_CN" target="_blank" rel="external">这里</a>。</p>
<h3 id="微信事件处理"><a href="/1970/01/01/[Wechat]微信公众号开发流程/#微信事件处理" class="headerlink" title="微信事件处理"></a>微信事件处理</h3><p>配置了上面的参数我们就可以处理微信发给我们的各种信息了。微信所有信息都是以POST的方式发送到我们之前配置的地址上。在URL参数中会携带四个参数<code>signature</code>、 <code>timestamp</code>、 <code>nonce</code>和<code>openid</code>，数据部分在body中。按照微信的接口协议，我们就可以开始微信功能开发了。</p>
<p>最后，无论是实用的是什么语言，都建议你去找一份封装的SDK来使用。这样可以大大的增加你的开发效率，当然，如果你是像我一样为了学习，可以自己去解析这些xml格式的消息～～</p>
<p><img src="https://raw.githubusercontent.com/ttdevs/ttdevs.github.io/common/images/logo.png" alt="Create by ttdevs"></p>

          </section>
        </article>
        

       
        <div class="pager">
          
            <a class="post-prev pager-item" href="/1970/01/01/[Volley]0x04一些细节/" >
              <strong class="article-nav-caption">上一篇</strong>
              <p class="post-nav-title">「Volley」0x04一些细节</p>
            </a>
          
          
            <a class="post-next pager-item" href="/1970/01/01/[macOS]Crontab定时任务/">
              <strong class="article-nav-caption">下一篇</strong>
              <p class="post-nav-title">「macOS」Crontab定时任务</p>
            </a>
          
        </div>
        

         <!-- comments -->
        <div class="comment-section">
  
    


</div>

    </div>
    
    <aside>
        <div id="toc">
        </div>
    </aside>
    
</div>

                </div>
            </div>
        </div>
        <footer class="footer">
    <p>由<a href="http://hexo.io/" target="_blank">Hexo</a>强力驱动，搭载<a href="https://github.com/wayou/hexo-theme-gstyle">gstyle</a>主题</p>
    <p>
        &copy; 2017 ttdevs
    </p>
</footer>
<script src="/lib/jquery.js"></script>
<script src="/lib/waves.js"></script>
<script src="/lib/jquery-ui.js"></script>
<script src="/lib/jquery.tocify.js"></script>
<script src="/js/main.js"></script>

    </body>
</html>
